﻿Option Explicit On
Option Strict On


''' <summary>
''' Control De Citas
''' TODO:/ Crear una select para rellenar los empleados - ok
''' TODO:/ Crear una select para rellenar tratamientos - ok
''' TODO:/ Crear Una Select para buscar Clientes - ok
''' TODO:/ Borra del data grid los tratamientos cundo usamos el  filtro (pero solo borra los que no estan seleccionados) - ok
''' TODO:/ Rellenar con la nueva busqueda - ok
''' TODO:/ Rellenar el calendario diario al entrar en la venta form_cita y al cambiar la fecha - ok
''' TODO:/ Antes de insertar comprobar si todo los datos son correctos - ok
''' TODO:/ Luego de esto insertar la cita en bd si es correcta - ok falta comprobar antes
''' </summary>
''' <remarks>Francisco Juan Royo Bua ultima modificacion: 04/02/2012</remarks>

Public Class Form_Cita

#Region "Atributos"

    Private ListaComboBoxTratamientos As IList(Of ComboBox)
    Private _MyBaseDedatos As BBDDCita
    Private _MyCita As Cita 'aqui se guarda toda la informacion relevante para guardar en la base de datos
    Private _MyDia As ObjSemana 'para dibujar los  dias selecionados
    Private _ListaIdEmpleado As List(Of String) 'guarda las id de cada empleado
    Public _IdCliente As String 'guarda la id del cliente que se lo pasa el buscador

#End Region

    Private Function ComprobarDatos() As Boolean
        Dim ok As Boolean = True

        ErrorProvider1.Clear()
        'comprobar si tiene un nombre y un idCliente
        If TextBoxombre.Text = "" Or _IdCliente = "" Then
            ErrorProvider1.SetError(PictureBoxBuscar, "Elija un Cliente con el Buscar")
            ok = False
        End If

        'comprobar si hay elijida una hora
        If ComboBoxHora.SelectedIndex = -1 And ComboBoxMinuto.SelectedIndex = -1 Then
            ErrorProvider1.SetError(ComboBoxMinuto, "Elija una hora")
            ok = False
        End If

        'comprobar si hay elejido un empleado
        If ComboBoxEmpleado.SelectedIndex < 0 Then
            ErrorProvider1.SetError(ComboBoxEmpleado, "Elija un Empleado")
            ok = False
        End If

        'comprobar si tiene un tratamiento elejido recorriendo el data grid
        Dim tratamientoOk As Boolean = False
        For indice = 0 To DataGridViewTratamientos.Rows.Count - 1
            If CBool(DataGridViewTratamientos.Rows(indice).Cells("check").Value) Then
                indice = DataGridViewTratamientos.Rows.Count + 10
                tratamientoOk = True
            End If
        Next

        If Not tratamientoOk Then
            ErrorProvider1.SetError(TextBoxCita, "Elija un tratamiento")
            ok = False
        End If

        Return ok
    End Function

    Private Sub RadioButtonTratamiento_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButtonTratamiento.CheckedChanged, RadioButtonTiempo.CheckedChanged

        If RadioButtonTratamiento.Checked Then
            LabelCita.Visible = True
            TextBoxCita.Visible = True
            DataGridViewTratamientos.Visible = True
            PanelComtolCombobox.Visible = False
            PanelTiempo.Visible = False
        Else
            LabelCita.Visible = False
            TextBoxCita.Visible = False
            DataGridViewTratamientos.Visible = False
            PanelComtolCombobox.Visible = False
            PanelTiempo.Visible = True
        End If

    End Sub

    Private Sub Form_Cita_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        _IdCliente = ""
        _ListaIdEmpleado = New List(Of String)

        _MyBaseDedatos = New BBDDCita()
        _MyCita = New Cita()
        'creamos el calendario de un dia
        _MyDia = New ObjSemana(PanelCaledarioDiario, 5, ObjSemana._diasSemana.Lunes)
        _MyDia.Ancho = 225
        _MyDia.Alto = 520
        _MyDia.X = 15
        _MyDia.Y = 15
        _MyDia.Labelunes.Text = Now.ToString("dd/MM/yyyy")
        _MyDia.EstaBlecerRangoHoras("09:00", "20:00")
        'la minima fecha es apartir de la fecha actual
        DateTimePickerFecha.MinDate = Now

        ToolStripStatusLabelHora.Text = CStr(Now)
        TimerHora.Start()
        PanelTiempo.Location = DataGridViewTratamientos.Location

        Me.RellenarComboBox()

        ListaComboBoxTratamientos = New List(Of ComboBox)

        PictureBoxMAs_Click(sender, e)

        'darle un valor al comboboxhora
        Me.ActualizarHoras()
    End Sub

    Public Sub ActualizarHoras()
        'darle un valor al comboboxhora
        ComboBoxHora.SelectedItem = Now.Hour.ToString("00")
        Dim tiempo As Integer = CInt(Now.Minute.ToString)
        'darle un valor al comboboxMinuto
        If tiempo >= 0 And tiempo <= 15 Then
            ComboBoxMinuto.SelectedItem = "15"
        ElseIf tiempo >= 16 And tiempo <= 30 Then
            ComboBoxMinuto.SelectedItem = "30"
        ElseIf tiempo >= 31 And tiempo <= 45 Then
            ComboBoxMinuto.SelectedItem = "45"
        Else
            ComboBoxMinuto.SelectedItem = "00"
        End If
    End Sub

#Region "control panel tratameinto expandible (eventos)"
    ''' <summary>
    ''' agrega otro comboboxTratamiento
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    Private Sub PictureBoxMAs_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBoxMAs.Click


        ListaComboBoxTratamientos.Add(Me.CrearUnNuevoComboBox)
        GestionarAparicionComboBoxTratamiento()

        'hacer aparecer el boton menos y colocarlo
        If ListaComboBoxTratamientos.Count > 1 Then
            PictureBoxMenos.Visible = True
            PictureBoxMenos.Location = New Point(PictureBoxMenos.Location.X, ListaComboBoxTratamientos(ListaComboBoxTratamientos.Count - 1).Location.Y)
            PictureBoxMAs.Location = New Point(PictureBoxMAs.Location.X, ListaComboBoxTratamientos(ListaComboBoxTratamientos.Count - 1).Location.Y)
        Else
            PictureBoxMenos.Visible = False
        End If

    End Sub

    Private Sub PictureBoxMenos_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBoxMenos.Click
        ListaComboBoxTratamientos(ListaComboBoxTratamientos.Count - 1).Dispose()
        ListaComboBoxTratamientos.RemoveAt(ListaComboBoxTratamientos.Count - 1)
        GestionarAparicionComboBoxTratamiento()

        'hacer aparecer el boton menos y colocarlo
        If ListaComboBoxTratamientos.Count > 1 Then
            PictureBoxMenos.Visible = True
            PictureBoxMenos.Location = New Point(PictureBoxMenos.Location.X, ListaComboBoxTratamientos(ListaComboBoxTratamientos.Count - 1).Location.Y)
            PictureBoxMAs.Location = New Point(PictureBoxMAs.Location.X, ListaComboBoxTratamientos(ListaComboBoxTratamientos.Count - 1).Location.Y)
        Else
            PictureBoxMenos.Visible = False
            PictureBoxMAs.Location = New Point(PictureBoxMAs.Location.X, ListaComboBoxTratamientos(ListaComboBoxTratamientos.Count - 1).Location.Y)
        End If

        PanelComtolCombobox.Refresh()
    End Sub

    Private Sub PictureBoxMas_MouseHover(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBoxMAs.MouseHover

        PictureBoxMAs.Image = Image.FromFile("Img/MasPulsado.png")

    End Sub

    Private Sub PictureBoxMas_MouseLeave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBoxMAs.MouseLeave

        PictureBoxMAs.Image = Image.FromFile("Img/MasSinPulsar.png")

    End Sub

    Private Sub PictureBoxMenos_MouseHover(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBoxMenos.MouseHover

        PictureBoxMenos.Image = Image.FromFile("Img/MenosPulsado.png")

    End Sub

    Private Sub PictureBoxMenos_MouseLeave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBoxMenos.MouseLeave

        PictureBoxMenos.Image = Image.FromFile("Img/MenosSinPulsar.png")

    End Sub
#End Region

#Region "metodos"

    ''' <summary>
    ''' crea la cadena de tiempo apartir de undTiempo y la undValorTiempo
    ''' </summary>
    ''' <param name="undTiempo"></param>
    ''' <param name="interValoTiempo"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Private Function CrearCadenaTiempo(ByVal undTiempo As Integer, ByVal interValoTiempo As Integer) As String
        Dim cadena As String = ""

        Dim valor As Integer = undTiempo * interValoTiempo

        If valor < 60 Then

            cadena = "00:" & valor.ToString("00") & " minutos"

        Else
            Dim hora As Integer
            hora = CInt(valor / 60)
            valor = valor Mod 60

            cadena = hora.ToString("00") & ":" & valor.ToString("00") & " horas"

        End If

        Return cadena
    End Function

    ''' <summary>
    ''' Pinta el calendario a partir de la información suministrada
    ''' </summary>
    ''' <remarks></remarks>
    Private Function PintarCalendario() As Boolean

        Dim totalHoras As Integer
        Dim ok As Boolean = True
        'obtener empleado
        Dim codEmpleado As Integer = CInt(ComboBoxEmpleado.SelectedItem.ToString.Substring(0, 1))
        Dim nombreEmpleado As String = ComboBoxEmpleado.SelectedItem.ToString
        nombreEmpleado = nombreEmpleado.Substring(4, nombreEmpleado.Length - 4)
        'calcular días
        totalHoras = TotalHorasDatagrip() - 1
        If _MyDia.EstaRango(ObjSemana._diasSemana.Lunes, ComboBoxHora.SelectedItem.ToString & ":" & ComboBoxMinuto.SelectedItem.ToString, codEmpleado, totalHoras) Then
            If Not _MyDia.DibujarCitasInformacion(ObjSemana._diasSemana.Lunes, ComboBoxHora.SelectedItem.ToString & ":" & ComboBoxMinuto.SelectedItem.ToString, codEmpleado, totalHoras, nombreEmpleado) Then
                MsgBox("Está ocupada la fecha")
                ok = False
            End If
        Else
            MsgBox("Fuera de horario")
            ok = False
        End If
        
        Return ok
    End Function

    Private Function PintarCalendario(ByVal listaDeCitas As List(Of Cita)) As Boolean
        Dim ok As Boolean = True

        _MyDia.Limpiar()

        For indice = 0 To listaDeCitas.Count - 1

            If Not _MyDia.DibujarCitasInformacion(ObjSemana._diasSemana.Lunes, listaDeCitas(indice).horaInicio.ToString("HH:mm"), listaDeCitas(indice).Empleado.IdEmpleado, listaDeCitas(indice).ListaTratamiento(0).Tiempos, listaDeCitas(indice).idCita) Then
                MsgBox("Está ocupada la fecha o fuera de rango")
                ok = False
            End If

        Next

        Return ok
    End Function

    Private Function TotalHorasDatagrip() As Integer
        Dim total As Integer
        'se recorre data grid
        For indice = 0 To DataGridViewTratamientos.Rows.Count - 1
            With DataGridViewTratamientos
                'antes de limpiar comprobar si esta chequeado - si esta check no se borra
                If CBool(.Rows(indice).Cells("check").Value) Then

                    total += CInt(.Rows(indice).Cells("undTiempo").Value)

                Else
                    'no se hace nada
                End If
            End With
        Next

        Return total
    End Function
    ''' <summary>
    ''' Deja todo como al principio
    ''' </summary>
    ''' <remarks></remarks>
    Private Sub Borrar()
        _IdCliente = ""
        _MyDia.Labelunes.Text = Now.ToString("dd/MM/yyyy")
        'la minima fecha es apartir de la fecha actual
        DateTimePickerFecha.Value = Now

        TextBoxombre.Text = ""
        TextBoxCita.Text = ""
        Me.LimpiarDataGrip("")

        'recorre el data y quitar selecionados
        For indice = 0 To DataGridViewTratamientos.Rows.Count - 1
            With DataGridViewTratamientos
                'quitar selecionado
                If CBool(.Rows(indice).Cells("check").Value) Then
                    .Rows(indice).Cells("check").Value = False
                End If
            End With
        Next

        Me.ActualizarHoras()

        ComboBoxEmpleado.Text = "Empleado"

    End Sub

    ''' <summary>
    ''' limpia los datos no seleccionados
    ''' </summary>
    ''' <remarks></remarks>
    Private Sub LimpiarDataGrip(ByVal textoBuscar As String)

        'y guardamos todo los tratameintos en my cita primero lo limpiamos
        _MyCita.ListaTratamiento.Clear()
        'se recorre data grid
        For indice = 0 To DataGridViewTratamientos.Rows.Count - 1
            With DataGridViewTratamientos
                'antes de limpiar comprobar si esta chequeado - si esta check no se borra
                If CBool(.Rows(indice).Cells("check").Value) Then
                    Dim auxTratamiento As New Tratamiento
                    auxTratamiento.IdTratamiento = CStr(.Rows(indice).Cells("idTratamiento").Value)
                    auxTratamiento.Tiempos = CInt(.Rows(indice).Cells("undTiempo").Value)
                    _MyCita.ListaTratamiento.Add(auxTratamiento)
                Else
                    If .Rows(indice).Cells("nombre").Value.ToString.ToUpper.IndexOf(textoBuscar.ToUpper) > -1 Then
                        .Rows(indice).Visible = True
                    Else
                        .Rows(indice).Visible = False
                    End If

                End If
            End With
        Next

    End Sub

    ''' <summary>
    ''' Rellena los comboBox Apartir de la bbdd
    ''' Por ahora es un Ejemplo
    ''' </summary>
    ''' <remarks>Francisco Juan Royo Bua -> 25/01/2012</remarks>
    Private Sub RellenarComboBox()

        'Horas
        With ComboBoxHora.Items

            .Add("09")
            .Add("10")
            .Add("11")
            .Add("12")
            .Add("13")
            .Add("14")
            .Add("15")
            .Add("16")
            .Add("17")
            .Add("18")
            .Add("19")
            .Add("20")

        End With

        'Minutos
        With ComboBoxMinuto.Items
            .Add("00")
            .Add("15")
            .Add("30")
            .Add("45")
        End With

        'Cargar Empleados desde la base de datos a una lista de empleados
        Dim listaEmpleados As List(Of Empleado)
        listaEmpleados = _MyBaseDedatos.ObtenerTodosEmpleados()

        Dim contador As Integer = 1

        'recorre la lista de empleados
        For Each auxEmple As Empleado In listaEmpleados
            With auxEmple
                ComboBoxEmpleado.Items.Add(contador & " - " & .Nombre)
                _ListaIdEmpleado.Add(CStr(.IdEmpleado)) 'el contadpr hace referencia al id empleado
            End With
            contador += 1
        Next

        ComboBoxEmpleado.SelectedIndex = 0

        'Duración
        With ComboBoxTiempo.Items
            .Add("15 Minutos")
            .Add("30 Minutos")
            .Add("45 Minutos")
            .Add("1 Hora")
            .Add("1:15 Hora")
            .Add("1:30 Hora")
            .Add("1:45 Hora")
            .Add("2 Horas")
            .Add("2:15 Horas")
            .Add("2:30 Horas")
            .Add("2:45 Horas")
            .Add("3 Horas")
        End With

        'Rellenar datagrid con una lista de tratamientos
        Dim listaTratamientos As List(Of Tratamiento)
        listaTratamientos = _MyBaseDedatos.ObtenerTodosTrataminetos

        'se recorre toda la lista obtenida
        For Each auxTratamientos As Tratamiento In listaTratamientos
            With auxTratamientos

                DataGridViewTratamientos.Rows.Add(.nombre, .Precio.ToString("0.00"), Me.CrearCadenaTiempo(.Tiempos, 15), False, .IdTratamiento, .Tiempos)

            End With
        Next

    End Sub

    Private Function CrearUnNuevoComboBox() As ComboBox

        Dim nuevoComboBox As New ComboBox

        With nuevoComboBox
            .Name = ComboBoxTratamiento.Name & ListaComboBoxTratamientos.Count
            .Text = ComboBoxTratamiento.Text
            .Width = ComboBoxTratamiento.Width
            .Font = ComboBoxTratamiento.Font
            '.Location = New Point(3, 41)
            .Location = ComboBoxTratamiento.Location
            .Items.Add("CortePelo Chico -> 30 minutos")
            .Items.Add("CortePelo Chica -> 1 Hora")
            .Items.Add("Lavado Chico -> 15 Minutos")
            .Items.Add("Lavado Chica -> 30 Minutos")
            .Items.Add("Mechas -> 1 Hora")
            .Items.Add("Tinte -> 1 Hora")
            .Items.Add("Depilación Torax -> 1 Hora")
            .Items.Add("Depilación Piernas Chico -> 1 Hora")
            .Items.Add("Depilación Piernas Chica -> 1 Hora")
            .Items.Add("Depilación Cuerpo Entero Chico -> 1:45 Hora")
            .Items.Add("Depilación Cuerpo Entero Chica -> 1:30 Hora")
            .Items.Add("Manicura -> 45 Minutos")
        End With

        PanelComtolCombobox.Controls.Add(nuevoComboBox)

        Return nuevoComboBox
    End Function

    Private Sub GestionarAparicionComboBoxTratamiento()

        If ListaComboBoxTratamientos.Count > 0 Then

            'dar visible
            For indice = 0 To ListaComboBoxTratamientos.Count - 1
                ListaComboBoxTratamientos(indice).Visible = True
                ListaComboBoxTratamientos(indice).Location = New Point(ListaComboBoxTratamientos(indice).Location.X, ComboBoxTratamiento.Location.Y + 10 * indice + ListaComboBoxTratamientos(indice).Height * indice)
            Next

        End If

    End Sub

    ''' <summary>
    ''' calcula el nuevo tiempo para guardar
    ''' </summary>
    ''' <param name="horaInicio">la hora de inicio</param>
    ''' <param name="undTiempo">las unidades tiempo</param>
    ''' <param name="interValoTiempo">el intervalo de tiempo 15m por ejmeplo</param>
    ''' <returns>retorna la nueva hora</returns>
    ''' <remarks></remarks>
    Private Function CalcularNuevoTiempo(ByVal horaInicio As Date, ByVal undTiempo As Integer, ByVal interValoTiempo As Integer) As Date
        Dim nuevoTiempo As Date
        Dim intervaloHora As Integer = 0
        Dim intervaloMinutos As Integer = 0
        Dim tiempoSumar As String = Me.CrearCadenaTiempo(undTiempo, interValoTiempo).Substring(0, 5)

        'conseguir los intervalos de tiempo
        intervaloHora = CInt(tiempoSumar.Substring(0, 2))
        intervaloMinutos = CInt(tiempoSumar.Substring(3, 2))

        'sumar a la hora de inicio
        nuevoTiempo = DateAdd(DateInterval.Minute, intervaloMinutos, horaInicio)
        nuevoTiempo = DateAdd(DateInterval.Hour, intervaloHora, nuevoTiempo)

        Return nuevoTiempo
    End Function
#End Region

#Region "eventos varios"

    ''' <summary>
    ''' cuando cambie el texto hara la busqueda y cambiara el data grid
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    Private Sub TextBoxCita_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBoxCita.TextChanged

        'limpiar data grid y actualizar
        LimpiarDataGrip(TextBoxCita.Text)

    End Sub

    Private Sub ButtonBusar(ByVal sender As System.Object, ByVal e As System.EventArgs)

        If FormVisualizarEmple.Visible Then
            FormVisualizarEmple.Close()
            FormVisualizarEmple._nombreBuscar = TextBoxombre.Text
            FormVisualizarEmple.Show()
        Else
            FormVisualizarEmple._nombreBuscar = TextBoxombre.Text
            FormVisualizarEmple.Show()
        End If

    End Sub

    Private Sub TimerHora_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TimerHora.Tick
        ToolStripStatusLabelHora.Text = CStr(Now)
    End Sub

    Private Sub DateTimePickerFecha_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DateTimePickerFecha.ValueChanged
        _MyDia.Labelunes.Text = DateTimePickerFecha.Value.ToString
        'pintar el calendario por  la fecha
        Dim listaCita As List(Of Cita)
        Dim fecha As String = DateTimePickerFecha.Value.ToString("dd/MM/yyyy")
        listaCita = _MyBaseDedatos.BuscarCitaFecha(fecha)

        PintarCalendario(listaCita)

    End Sub

    Private Sub Guardar(ByVal sender As System.Object, ByVal e As System.EventArgs)

        'antes de rellenar comprobar si estan bien los datos, a rellenar la clase cita
        If Me.ComprobarDatos() Then

            Dim _cliente As New Cliente
            _cliente.CodCliente = CInt(_IdCliente)
            Dim _empleado As New Empleado
            'se consigue el codigo del empleado 
            _empleado.IdEmpleado = CInt(_ListaIdEmpleado(CInt(ComboBoxEmpleado.SelectedItem.ToString.Substring(0, 1)) - 1))
            _MyCita.Empleado.IdEmpleado = _empleado.IdEmpleado
            _MyCita.Cliente.CodCliente = _cliente.CodCliente
            _MyCita.horaInicio = CDate(ComboBoxHora.SelectedItem.ToString & ":" & ComboBoxMinuto.SelectedItem.ToString)
            _MyCita.fecha = CDate(DateTimePickerFecha.Value.ToString)

            'pintar calendario Diario y comprobar que está todo bien antes de guardar
            If PintarCalendario() Then
                LimpiarDataGrip("?") 'se pasa un caracter que no este en las cadenas para que quite el resto de tratamientos
                Dim guardadosOk As Boolean = True
                Dim horaGuardar As Date = _MyCita.horaInicio
                'se guarda por cada tratamiento 
                For indice = 0 To _MyCita.ListaTratamiento.Count - 1
                    If Not _MyBaseDedatos.InsertarCita(CStr(_MyCita.Cliente.CodCliente), CStr(horaGuardar), _MyCita.fecha.ToString("dd/MM/yyyy"), CStr(_MyCita.Empleado.IdEmpleado), _MyCita.ListaTratamiento(indice).IdTratamiento) Then
                        guardadosOk = False
                    End If
                    horaGuardar = CalcularNuevoTiempo(horaGuardar, _MyCita.ListaTratamiento(indice).Tiempos, 15)
                Next

                'indicar si los datos estan guardados
                If guardadosOk Then
                    MsgBox("Datos Guardados con exito", , "Información")
                    FormPrincipal.cargarCitasHoy()
                    FormPrincipal.PintarCalendarioSemanal()
                    Me.Close()
                Else
                    MsgBox("Datos No Guardados con exito", , "Información")
                    'se redibuja el calendario
                    DateTimePickerFecha.Value = _MyCita.fecha
                End If

            Else
                'se redibuja el calendario
                DateTimePickerFecha_ValueChanged(sender, e)
                LimpiarDataGrip("") 'se pasa un caracter que no este en las cadenas para que quite el resto de tratamientos
            End If
        End If

    End Sub

    ''' <summary>
    ''' Cambiar el Foco para guardar cambios
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    Private Sub DataGridViewTratamientos_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridViewTratamientos.CellContentClick
        PictureBoxBuscar.Focus()
    End Sub

#Region "eventos picture"
   
    Private Sub Picture_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBoxBuscar.Click, PictureBoxBorrar.Click, PictureBoxCancelar.Click, PictureBoxGuardar.Click

        Dim auxPicture As PictureBox = CType(sender, PictureBox)

        Select Case auxPicture.Name
            Case PictureBoxBuscar.Name
                ButtonBusar(sender, e)
            Case PictureBoxCancelar.Name
                Me.Close()
            Case PictureBoxBorrar.Name
                Me.Borrar()
            Case PictureBoxGuardar.Name
                Guardar(sender, e)
        End Select

    End Sub

    Private Sub Picture_MouseHover(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBoxBuscar.MouseHover, PictureBoxBorrar.MouseHover, PictureBoxCancelar.MouseHover, PictureBoxGuardar.MouseHover

        Dim auxPicture As PictureBox = CType(sender, PictureBox)

        Select Case auxPicture.Name
            Case PictureBoxBuscar.Name
                PictureBoxBuscar.BackgroundImage = Image.FromFile("Img/Botones/BBuscarCon.png")
            Case PictureBoxBorrar.Name
                PictureBoxBorrar.BackgroundImage = Image.FromFile("Img/Botones/BBorrarCon.png")
            Case PictureBoxGuardar.Name
                PictureBoxGuardar.BackgroundImage = Image.FromFile("Img/Botones/BGuardarCon.png")
            Case PictureBoxCancelar.Name
                PictureBoxCancelar.BackgroundImage = Image.FromFile("Img/Botones/BCancelarCon.png")

        End Select

    End Sub

    Private Sub Picture_MouseLeave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBoxBuscar.MouseLeave, PictureBoxBorrar.MouseLeave, PictureBoxCancelar.MouseLeave, PictureBoxGuardar.MouseLeave

        Dim auxPicture As PictureBox = CType(sender, PictureBox)

        Select Case auxPicture.Name
            Case PictureBoxBuscar.Name
                PictureBoxBuscar.BackgroundImage = Image.FromFile("Img/Botones/BBuscarSin.png")
            Case PictureBoxBorrar.Name
                PictureBoxBorrar.BackgroundImage = Image.FromFile("Img/Botones/BBorrarSin.png")
            Case PictureBoxGuardar.Name
                PictureBoxGuardar.BackgroundImage = Image.FromFile("Img/Botones/BGuardarSin.png")
            Case PictureBoxCancelar.Name
                PictureBoxCancelar.BackgroundImage = Image.FromFile("Img/Botones/BCancelarSin.png")

        End Select

    End Sub

#End Region

#End Region
    
End Class